制作 img 镜像


1.更新源:
sudo apt-get update
安装 Linux 编译内核的工具依赖
sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils
sudo apt-get install libssl-dev bc flex libelf-dev bison
准备一个 Linux 内核
https://www.kernel.org/

2.准备磁盘文件
创建 256M 大小的磁盘文件
dd if=/dev/zero of=disk.img bs=1M count=256
磁盘大小根据内核大小来定
对磁盘分区,整个磁盘只建一个分区
fdisk disk.img
可以看到该磁盘只有一个主分区,是从第2048个扇区开始
fdisk -l disk.img
使用 losetup 命令将该分区与一个 /dev/loop7 设备进行关联
sudo losetup -o 1048576 /dev/loop7 disk.img
-o 表示该分区在 disk.img 的偏移量(字节为单,即2048 x 512 = 1048576 )
这里将分区格式化为 ext3
sudo mkfs.ext3 /dev/loop7
格式可为:ext2、ext3、ext4
将该分区挂载到 mnt 目录
sudo mkdir mnt
sudo mount -t ext3 /dev/loop7 ./mnt/
注意格式:若在之前输入 ext4,此处也应为 ext4。否则会报错误。

3.安装 grub
sudo grub-install --boot-directory=./mnt/boot/ --target=i386-pc --modules=part_msdos disk.img

4.编译内核
将下载好的 Linux 内核移到主目录,然后提取出来
(图片未能及时更新,但不影响最后结果)
右键在终端打开
配置编译 x86_64 内核和拷贝到 distk.img 磁盘的 boot/ 目录
make x86_64_defconfig
make bzImage -j4
sudo cp arch/x86/boot/bzImage ~/mnt/boot/
配置编译 x86_64 内核和拷贝到 distk.img 磁盘的 boot/ 目录
sudo mkinitramfs -o ./mnt/boot/initrd

5.创建引导文件
使用 root 权限编写 grub.cfg,让 Grub 引导系统运行

cat - > ./mnt/boot/grub/grub.cfg << EOF
set timeout=10
menuentry 'liangnijian' {
linux (hd0,msdos1)/boot/bzImage console=tty0
initrd (hd0,msdos1)/boot/initrd 
} 
EOF
set timeout=10 指的是:默认10秒后进入系统。
menuentry '显示的系统名称(仅英文)' {
(图片未能及时更新,但不影响最后结果)
将建立的文件内容刷新到 disk.img 磁盘文件上
umount /dev/loop7
losetup -d /dev/loop7
找个工具刻录到U盘即可
注:此镜像仅支持 BIOS 启动。